Solved: Programmatically Create Content fragments and vari... |
您所在的位置:网站首页 › create content › Solved: Programmatically Create Content fragments and vari... |
I have created the content fragment and content fragment variants programmatically based on the data present in the map.
public static void createVariations(ResourceResolver resourceResolver, String variationTitle,Map variationData, String fragmentTitle, String pagePath, SlingHttpServletResponse response)throws ContentFragmentException, IOException, ParseException {Resource fragmentResource = resourceResolver.getResource(CFM_ROOT_PATH + "/" + lowerCaseConverter(fragmentTitle));if (null != fragmentResource) {ContentFragment cfm = fragmentResource.adaptTo(ContentFragment.class);Iterator variations = cfm.listAllVariations();boolean variationExists = false;while (variations.hasNext()) {VariationDef variation = variations.next(); //if (variation.getName().equals(titleFormater(variationTitle))) {variationExists = true;}}if (!variationExists) {// create the variationcfm.createVariation(titleFormater(variationTitle), variationTitle, "");}Iterator itr = cfm.getElements();while (itr.hasNext()) {ContentElement cfElement = itr.next();ContentVariation cv = cfElement.getVariation(titleFormater(variationTitle));FragmentData fragmentData = cv.getValue();if (cfElement.getName().equals("title")) {fragmentData.setValue(variationData.get("title"));}if (cfElement.getName().equals("href")) {fragmentData.setValue(variationData.get("path"));}if (cfElement.getName().equals("softwareVersion")) {fragmentData.setValue(variationTitle);}if (cfElement.getName().equals("releaseNotes")) {fragmentData.setValue(variationData.get("notesPath"));}if (cfElement.getName().equals("downloadSizeUom")) {fragmentData.setValue(variationData.get("sizeUnit"));}if (cfElement.getName().equals("downloadSize")) {fragmentData.setValue(variationData.get("size"));}if (cfElement.getName().equals("releaseDate")) {if (Objects.nonNull(variationData.get("releaseDate"))) {fragmentData.setValue(variationData.get("releaseDate"));}}if (cfElement.getName().equals("archived")) {fragmentData.setValue(variationData.get("archivedSoftware"));}if (cfElement.getName().equals("category")) {Resource cfResource = cfm.adaptTo(Resource.class);if (Objects.nonNull(cfResource)) {Resource variationResource = cfResource.getChild(JcrConstants.JCR_CONTENT + "/data/" + titleFormater(variationTitle));if (Objects.nonNull(variationResource)) {Node variationNode = variationResource.adaptTo(Node.class);if (Objects.nonNull(variationNode)) {try {//Updating the TagsSet categoryList = new HashSet();if (variationNode.hasProperty("category")) {Value[] categories = variationNode.getProperty("category").getValues();for (Value value : categories) {categoryList.add(value.getString());}}categoryList.add(tagGenerator(variationData.get("pageTags").toString()));fragmentData.setValue(categoryList.toArray());} catch (ValueFormatException e) {log.error("ValueFormatException error {}.", e.getMessage(), e);} catch (PathNotFoundException e) {log.error("PathNotFoundException error {}.", e.getMessage(), e);} catch (RepositoryException e) {log.error("RepositoryException error {}.", e.getMessage(), e);} } } } }cv.setValue(fragmentData);}}resourceResolver.commit();} |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |